<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of persistenciaUsuario
 *
 * @author Agustin
 */
class PersistenciaUsuario {

    private static $instance = false;

    public static function getInstance() {
        if (!self::$instance instanceof self) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    private function __construct() {
        
    }

    public function login($usuario, $pass) {
        require_once 'Modelo/conexion.php';
        require_once 'Modelo/permiso.php';
        require_once 'Modelo/usuario.php';
        $query = "select (usuarios.idUsuario) as id , (usuarios.nombre) as usuario , (usuarios.contrasenia) as contrasenia, (permisos.idPermiso) as idPermiso , (permisos.nombre) as permiso, (usuarios.loguiado) as log , (usuarios.idPersona) as idPersona from (SELECT * FROM usuarios where nombre = '" . $usuario . "' and contrasenia = '" . $pass . "') as usuarios inner join permisos on usuarios.idPermiso = permisos.idPermiso ";
        $con = Conexion::getInstance();

        $res = $con->consulta($query);
        if ($res != null && !$res[0]['log']) {
            // $con->consulta('update usuarios set loguiado = true where idUsuario = '.$res[0]['id']);
            $permiso = new Permiso($res[0]['idPermiso'], $res[0]['permiso']);
            $usuario = new Usuario($res[0]['id'], $res[0]['usuario'], $res[0]['contrasenia'], $permiso, $res[0]['idPersona']);
            return $usuario;
        } else {
            return null;
        }
    }

    public function asignarUsuarioPersona($datos) {
        if (!$this->buscarUser($datos[1]) || (isset($datos[5]) && $datos[1] == $datos[5])) {
            if ($datos[4] == '1') {
                $this->modLogin($datos);
                return 1;
            } else {
                $this->crearLogin($datos);
                return 2;
            }
        } else {
            return 3;
        }
    }

    private function crearLogin($datos) {
        require_once 'Modelo/conexion.php';
        $con = Conexion::getInstance();
        $aux = 0;
        if ($datos[3] == 'cli') {
            $aux = 3;
        } elseif ($datos[3] == 'tec') {
            $aux = 2;
        } else {
            $aux = 1;
        }

        $query = 'insert into usuarios (nombre, contrasenia, idPermiso,loguiado, idPersona) values ("' . $datos[1] . '","' . $datos[2] . '",' . $aux . ',"0","' . $datos[0] . '");';
        
        $con->consulta($query);
    }

    private function modLogin($datos) {
        require_once 'Modelo/conexion.php';
        $con = Conexion::getInstance();
//        $aux = 0;
//        if ($datos[3] == 'cli') {
//            $aux = 3;
//        } else {
//            $aux = 2;
//        }
        $query = 'update usuarios set nombre="' . $datos[1] . '", contrasenia="' . $datos[2] . '" where idPersona = ' . $datos[0];
        $con->consulta($query);
    }

    public function leerLogin($id) {
        require_once('conexion.php');
        $con = Conexion::getInstance();
        $query = 'select nombre, contrasenia from usuarios where idPersona = ' . $id;
        $aux = $con->consulta($query);
        $res = null;
        if ($aux != null) {
            $res = $aux[0];
        }
        return $res;
    }

    public function delLogin($id) {
        require_once('conexion.php');
        $con = Conexion::getInstance();
        $query = 'delete from usuarios where idPersona = ' . $id;
        $con->consulta($query);
        $aux = $this->leerLogin($id);
        if ($aux != null) {
            return false;
        }
        return true;
    }

    public function buscarUser($nom) {
        if ($nom == '') {
            return false;
        }
        require_once('conexion.php');
        $con = Conexion::getInstance();
        $query = 'select idUsuario from usuarios where nombre = "' . $nom . '"';
        $aux = $con->consulta($query);
        if ($aux != null) {
            return true;
        }
        return false;
    }

}

?>
